Motion.SetAxisCamSwitch 方法
使用軸位置來控制觸發數位輸出的開關。當軸達到特定的位置,開關即開啟或關閉,開關可透過軸向前或向後移動的方向來控制。
命名空間:IntervalZero.KINGSTAR.Local.Api
組合: IntervalZero.KINGSTAR.Local.Api (於 IntervalZero.KINGSTAR.Local.dll) 版本:4.4.0.0
語法
public KsCommandStatus SetAxisCamSwitch(
int Index,
McCamSwitch[] Switches,
McOutput[] Outputs,
McTrack[] Tracks,
uint EnableMask,
McSource ValueSource
)
Public Function SetAxisCamSwitch(
Index As Integer,
Switches As McCamSwitch(),
Outputs As McOutput(),
Tracks As McTrack(),
EnableMask As UInteger,
ValueSource As McSource
) As KsCommandStatus
參數
Index [in]
型別:int
軸索引。索引以 0 為起始;別名將影響此參數。
Switches [in]
型別:McCamSwitch[]
控制切換動作。軌道編號需要按順序排列。
Outputs [in]
型別:McOutput[]
選擇對應軌道所控制的數位輸出。
Tracks [in]
型別:McTrack[]
在軌道的開關上增加補償時間和遲滯。TrackNumber 定義在 Switches 中。
EnableMask [in]
型別:uint
啟用不同軌道。此參數為 bool(32 位元),當 bool 值設為 1 時將啟用軌道陣列中相應的軌道。
ValueSource [in]
型別:McSource
定義軸值的來源;例如:位置;參見 McSource。
- mcCommandedValue, mcSetValue – 同步設定值。建議使用此設定。
- mcActualValue – 同步實際值。此設定可能不穩定。
回傳值
回傳 KsCommandStatus 類別。
備註
- McCamSwitch 為供應商特定的類別,用於定義數位凸輪的開關。
- McOutput 為供應商特定的結構,用於連接至(實體)輸出,若使用的是您個人的伺服驅動器的數位輸出 (DO),需在 Api.Start 前使用 Api.EnableAxisOutput。
- McTrack 為供應商特定的結構,含有軌道屬性,例如:每個軌道的補償時間(軌道是一個輸出的一組開關),亦可包含輸出的引用。
- 此功能有時被稱作 PLS – 階段、位置或可編程極限開關。
- 當模數軸啟用時,模數值會套用至 McCamSwitch 中的 FirstOnPosition 與 LastOnPosition。為了避免潛在問題,建議將 FirstOnPosition 與 LastOnPosition(補償後)放在同一區段內,且不跨越模數邊界(請參閱範例 1)。
- 範例 1(建議):假設模數值設為 360。
軸速度: 180
OnCompensation: 0
OffCompensation: 0
FirstOnPosition: 210
LastOnPosition: 340 - 範例 2 (不建議):假設模數值設為 360。最終的 first-on 位置將為 300 (210 + 0.5 * 180),最終的 last-on 位置將為 70 ((340 + 0.5 * 180) % 360),此即跨越模數邊界(從 300 到 70)。
軸速度: 180
OnCompensation: 0.5
OffCompensation: 0.5
FirstOnPosition: 210
LastOnPosition: 340
- 範例 1(建議):假設模數值設為 360。
McCamSwitch 類別中的元素
B/E | 參數 | 型別 | 說明 |
---|---|---|---|
B | TrackNumber | INT | 軌道索引,索引以零為起始。 |
B | FirstOnPosition [使用者單位] | LREAL | 開關開啟的位置。 |
B | LastOnPosition [使用者單位] | LREAL | 開關關閉的位置。 |
E | AxisDirection | INT |
軸方向,預設值為零。若選擇一或二,開關僅在當軸朝指定方向移動時才會啟動。 雙向:0;正向:1;負向:2。 |
E | CamSwitchMode | INT |
凸輪開關由軸的位置或時間控制,預設值為零。若選擇位置,需進一步設定 FirstOnPosition 與 LastOnPosition;若選擇時間,需進一步設定 FirstOnPosition 與 Duration。 位置:0;時間:1。 |
E | Duration | TIME | 開關開啟的時長,此功能在 CamSwitchMode 選擇為時間時可用,單位:秒。 |
McTrack 類別中的元素
B/E | 參數 | 型別 | 說明 |
---|---|---|---|
E | OnCompensation | TIME | 在每個軌道的切換點前或後開啟開關(上升邊緣)的補償時間。若值為正,則開啟將延遲;若值為負,則將提前開啟。 |
E | OffCompensation | TIME | 在每個軌道的切換點前或後關閉開關(下降邊緣)的補償時間。若值為正,則關閉將延遲;若值為負,則將提前關閉。 |
E | Hysteresis [單位] | LREAL | 在軸離開該區域之前,從開關未打開或未關閉的切換點(正向和負向)的距離。此可避免在開關點附近頻繁切換。 |
此凸輪定義具有起點與終點,如此使用者可定義每一個凸輪的 FirstOnPosition 與 LastOnPosition(或時間),此函式類似機械凸輪,但具有額外的優點,您可為輸出設置一個特定時間,並設定時間補償和遲滯。
CamSwitchMode:可為位置或時間。
Duration:時長,凸輪開啟的輸出時長,時間補償 (OnCompensation 與 OffCompensation) 可為正或負值,負值表示輸出在開關位置到達前即變更。
Hysteresis:此參數可避免軸在切換點附近及實際位置在切換位置附近抖動時,輸出不斷切換的現象。Hysteresis 是 McTrack 的一部分,表示每個軌道都可設定不同的遲滯。
McCamSwitch 之範例
參數 | 型別 | 開關 01 | 開關 02 | 開關 03 | 開關 04 | ... | 開關 N |
---|---|---|---|---|---|---|---|
TrackNumber | INTEGER | 1 | 1 | 1 | 2 | ||
FirstOnPosition [單位] | LREAL | 2000 | 2500 | 4000 | 3000 | ||
LastOnPosition [單位] | LREAL | 3000 | 3000 | 6000 | -- | ||
AxisDirection | INTEGER | 1=正向 | 2=負向 | 0=雙向 | 0=雙向 | ||
CamSwitchMode | INTEGER | 0=位置 | 0=位置 | 0=位置 | 1=時間 | ||
Duration | LREAL | -- | -- | -- | 1.35 秒 |
McOutput 之範例
參數 | MC_OUTPUT[0] | MC_OUTPUT[1] | MC_OUTPUT[2] | - | - | - | MC_OUTPUT[31] |
---|---|---|---|---|---|---|---|
IsAxis | FALSE | FALSE | FALSE | - | - | - | FALSE |
Index | 0 | 0 | 0 | - | - | - | 0 |
BitOffset | 0 | 1 | 2 | - | - | - | 31 |
I/O 模組之範例
下圖使用了上例 McCamSwitch 的值,不使用 On/OffCompensation 與 Hysteresis,此為當軸持續朝正向移動時的輸出行為。
SetAxisCamSwitch – 正向
正向:輸出行為
TrackNumber 1(開關 01, 02, 03)匹配到 McOutput[1];TrackNumber 2(開關 04)匹配到 McOutput[2]。當開關 01、開關 02、開關 03 被觸發時,第一個 I/O 模組(索引 0)上的第二個輸出(輸出 1)即被開啟。當開關 04 被觸發時,第三個輸出(輸出 2)即被開啟。
On/Off 補償之範例
以下範例使用 OnCompensation -125ms 與 OffCompensation +250ms。
下圖為當軸持續朝負向移動,且不使用 On/OffCompensation 與 Hysteresis 時的輸出行為。
SetAxisCamSwitch – 負向
負向:輸出行為
EnableMask
EnableMask 是一個含有 32 位元的 uint32 參數,每個位元都是一個 bool 值,可控制輸出。輸出可透過將相應的位元設為 TRUE 或 FALSE 來啟用或停用,例如位元 0 控制 McOutput[0];位元 1 控制 McOutput[1],若位元 0 和位元 1 都設為 TRUE,其輸出即被啟用,意即當相對應的開關被觸發時,其輸出即被開啟。若位元 0 和位元 1 都設為 FALSE,其輸出即被停用,即使相對應的開關被觸發時,其輸出也不會被開啟。
位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 |
---|---|---|---|---|---|---|---|---|---|
值 | TRUE/FALSE | TRUE/FALSE | TRUE/FALSE | TRUE/FALSE | - | - | - | - | TRUE/FALSE |
McOutput 之範例
參數 | MC_OUTPUT[0] | MC_OUTPUT[1] | MC_OUTPUT[2] | - | - | - | MC_OUTPUT[31] |
---|---|---|---|---|---|---|---|
IsAxis | FALSE | FALSE | FALSE | - | - | - | FALSE |
Index | 0 | 0 | 0 | - | - | - | 0 |
BitOffset | 0 | 1 | 2 | - | - | - | 31 |
EnableMask 位元之範例 1
位元 0、1、2 為 TRUE,意即輸出 0、1、2 被啟用,當相對應的開關被觸發時,輸出即被開啟。
位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 |
---|---|---|---|---|---|---|---|---|---|
值 | TRUE | TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
正向:輸出行為
EnableMask 位元之範例 2
位元 0、2 為 TRUE,意即輸出 0、2 被啟用,當相對應的開關被觸發時,僅有這 2 個輸出會被開啟。
位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 |
---|---|---|---|---|---|---|---|---|---|
值 | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
正向:輸出行為
EnableMask 位元之範例 3
所有位元均為 FALSE,意即所有輸出均停用,即使相對應的開關被觸發時,輸出也不會被開啟。
位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 |
---|---|---|---|---|---|---|---|---|---|
值 |
FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
正向:輸出行為
範例
N/A
參見